package com.itheima.d2_file;

import java.io.File;
import java.util.Arrays;

//目标：掌握文件夹的遍历功能
public class Demo4 {
    public static void main(String[] args) {
        /**
         * API：
         *      String[] list()：获取当前目录下所有的 "一级文件名称" 到一个字符串数组中去返回
         *      File[] listFiles()(常用)：获取当前目录下所有的 "一级文件对象" 到一个文件对象数组中去返回（重点）
         */
        //1.返回"遍历功能素材"根路径中所有文件和文件夹的名字
        File file = new File("E:\\ideaProject\\basic-code\\day11\\test");
        String[] nameArr = file.list();
        System.out.println(Arrays.toString(nameArr));

        //2.返回"遍历功能素材"根路径中所有文件和文件夹对象
        File[] fileArr = file.listFiles();
        System.out.println(Arrays.toString(fileArr));
        System.out.println("-------------");

        //3.返回"遍历功能素材"下c文件夹中所有的文件和文件夹名字以及文件对象（此时c文件夹不存在）
        File cFile = new File(file, "c");
        String[] cNamesArr = cFile.list();
        System.out.println(cNamesArr);
        File[] cFilesArr = cFile.listFiles();
        System.out.println(cFilesArr);
        //注意：当调用方法的文件夹不存在，返回的数组就是null
        System.out.println("-------------");

        // 4.返回"遍历功能素材"下d文件中所有的文件和文件夹名字以及文件对象
        File dFile = new File(file, "d");
        String[] dNamesArr = dFile.list();
        File[] dFilesArr = dFile.listFiles();
        System.out.println(Arrays.toString(dNamesArr));
        System.out.println(Arrays.toString(dFilesArr));
        //注意：文件调用遍历功能，返回的数组还是null
        System.out.println("-------------");

        //5.返回"遍历功能素材"下a文件夹中所有的文件和文件夹名字以及文件对象（a是文件夹，但是没有内容）
        File aFile = new File(file, "a");
        String[] aNamesArr = aFile.list();
        File[] aFilesArr = aFile.listFiles();
        System.out.println(Arrays.toString(aNamesArr));
        System.out.println(Arrays.toString(aFilesArr));
        System.out.println("-------------");

        //6.返回"遍历功能素材"下b文件夹中所有的文件和文件夹名字以及文件对象（在b文件夹中放入一个隐藏的文件）
        File bFile = new File(file, "b");
        String[] bNamesArr = bFile.list();
        File[] bFilesArr = bFile.listFiles();
        System.out.println(Arrays.toString(bNamesArr));
        System.out.println(Arrays.toString(bFilesArr));
        //注意：隐藏的文件，遍历功能也可以获取到！

        //7.修改b文件夹的权限为禁止访问，然后再尝试访问其中的文件和文件夹
        //注意：一旦没有权限操作，遍历功能返回的数组是null！
    }
}
